home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / dsp / 56ktools / dspkgctr.z / dspkgctr / gcc / reload.h < prev    next >
C/C++ Source or Header  |  1992-06-08  |  2KB  |  70 lines

  1. /* Communication between reload.c and reload1.c.
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20.  
  21. /* See reload.c and reload1.c for comments on these variables.  */
  22.  
  23. /* Maximum number of reloads we can need.  */
  24. #define MAX_RELOADS (2 * MAX_RECOG_OPERANDS * (MAX_REGS_PER_ADDRESS + 1))
  25.  
  26. extern rtx reload_in[MAX_RELOADS];
  27. extern rtx reload_out[MAX_RELOADS];
  28. extern rtx reload_in_reg[MAX_RELOADS];
  29. extern enum reg_class reload_reg_class[MAX_RELOADS];
  30. extern enum machine_mode reload_inmode[MAX_RELOADS];
  31. extern enum machine_mode reload_outmode[MAX_RELOADS];
  32. extern char reload_strict_low[MAX_RELOADS];
  33. extern char reload_optional[MAX_RELOADS];
  34. extern int reload_inc[MAX_RELOADS];
  35. extern int reload_needed_for_multiple[MAX_RELOADS];
  36. extern rtx reload_needed_for[MAX_RELOADS];
  37. extern int n_reloads;
  38.  
  39. extern rtx reload_reg_rtx[MAX_RELOADS];
  40.  
  41. enum reload_when_needed
  42. {
  43.   RELOAD_FOR_INPUT_RELOAD_ADDRESS,
  44.   RELOAD_FOR_OUTPUT_RELOAD_ADDRESS,
  45.   RELOAD_FOR_OPERAND_ADDRESS,
  46.   RELOAD_OTHER
  47. };
  48.  
  49. extern enum reload_when_needed reload_when_needed[MAX_RELOADS];
  50.  
  51. extern rtx *reg_equiv_constant;
  52. extern rtx *reg_equiv_address;
  53. extern rtx *reg_equiv_mem;
  54.  
  55. /* All the "earlyclobber" operands of the current insn
  56.    are recorded here.  */
  57. extern int n_earlyclobbers;
  58. extern rtx reload_earlyclobbers[MAX_RECOG_OPERANDS];
  59.  
  60. /* First uid used by insns created by reload in this function.
  61.    Used in find_equiv_reg.  */
  62. extern int reload_first_uid;
  63.  
  64. /* Nonzero if an address (plus (reg frame_pointer) (reg ...)) is valid.  */
  65. extern char double_reg_address_ok;
  66.  
  67. void init_reload ();
  68. void find_reloads ();
  69. void subst_reloads ();
  70.